$(function(){
	function checkUser(str){//用户名(密码)检查,验证规则：字母、数字、下划线组成，字母开头，4-16位。
	  if(str==null||str.length==0||str==""){
		  return false;
	  }
	  return true;
	}
	function checkPass(str){//字母开头，8-16位
		var re = /^[a-zA-z]\w{7,15}$/;
		if(re.test(str)){
		  return true;
		}else{
		  return false;
		}
	}
	function checkMobile(str) {//手机号码,验证规则：11位数字，以1开头。
	  var re = /^1\d{10}$/
	  if (re.test(str)){
	    return true;
	  }else{
	    return false;
	  }
	}
	/**
	 * @param {Object} time 倒计时间
	 * @param {Object} ele 底色元素（且父级）
	 * @param {Object} ele2 显示文字
	 */
	function count_down(time, ele, ele2) { //倒计时
		ele2.css({//父级元素(底色)
			"pointer-events": "none",
			"background-color": "#7b7b7b"
		}); //禁用点击事件及改变底色
		ele.text("重新发送(" + time + ")");
		var inter = setInterval(function() {
			time--;
			ele.text("重新发送(" + time + ")");
			if (time < 0) {
				clearInterval(inter);
				ele.text("发送验证码");
				ele2.css({
					"pointer-events": "",
					"background-color": "#5cad77"
				}); //禁用点击事件
			}
		}, 1000);
	}
	function draw(show_num) {//验证码图片
		var canvas = document.getElementById("canvas");//获取到canvas的对象，演员
		var canvas_width = canvas.clientWidth;
		var canvas_height = canvas.clientHeight;
		var context = canvas.getContext("2d"); //获取到canvas画图的环境，演员表演的舞台
		canvas.width = canvas_width;
		canvas.height = canvas_height;
		var sCode =
			"A,B,C,E,F,G,H,J,K,L,M,N,P,Q,R,S,T,W,X,Y,Z,1,2,3,4,5,6,7,8,9,0,q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,z,x,c,v,b,n,m";
		var aCode = sCode.split(",");
		var aLength = aCode.length; //获取到数组的长度
		for (var i = 0; i <= 3; i++) {
			var j = Math.floor(Math.random() * aLength); //获取到随机的索引值
			var deg = Math.random() * 30 * Math.PI / 180; //产生0~30之间的随机弧度
			var txt = aCode[j]; //得到随机的一个内容
			show_num[i] = txt;
			var x = 10 + i * 20; //文字在canvas上的x坐标
			var y = 20 + Math.random() * 8; //文字在canvas上的y坐标
			context.font = "bold 23px 微软雅黑";
	
			context.translate(x, y);
			context.rotate(deg);
	
			context.fillStyle = randomColor();
			context.fillText(txt, 0, 0);
	
			context.rotate(-deg);
			context.translate(-x, -y);
		}
		for (var i = 0; i <= 5; i++) { //验证码上显示线条
			context.strokeStyle = randomColor();
			context.beginPath();
			context.moveTo(Math.random() * canvas_width, Math.random() * canvas_height);
			context.lineTo(Math.random() * canvas_width, Math.random() * canvas_height);
			context.stroke();
		}
		for (var i = 0; i <= 30; i++) { //验证码上显示小点
			context.strokeStyle = randomColor();
			context.beginPath();
			var x = Math.random() * canvas_width;
			var y = Math.random() * canvas_height;
			context.moveTo(x, y);
			context.lineTo(x + 1, y + 1);
			context.stroke();
		}
	}
	function randomColor() { //得到随机的颜色值
		var r = Math.floor(Math.random() * 256);
		var g = Math.floor(Math.random() * 256);
		var b = Math.floor(Math.random() * 256);
		return "rgb(" + r + "," + g + "," + b + ")";
	}
	function show_tip(src,text,time){//提示框1成功，2失败
		var succes_tip=$(".q-login-tips"); //提示框
		time*=1000;
		if(src==1) src="images/zc/person/success@2x.png";
		else if(src==2) src="images/zc/person/fail@2x.png";
		else if(src==3) src="images/zc/person/wait_34.gif";
		succes_tip.find(".text").text(text);//设置提示内容
		succes_tip.find(".icon").css("background","url("+src+") 50%/18px 18px no-repeat");//设置提示标志
		succes_tip.find(".tip").css("width","auto");
		succes_tip.css("display", ""); //显示提示框（成功）
		setTimeout(function() {
			succes_tip.css("display", "none"); //关闭提示框
		},time); //2秒后关闭
	}
	var input=$(".q-login-form .q-login-form-control input");//输入框
	var input_tip=$(".q-login-form .q-login-form-control .input-tip .tip-error");//输入提示
	
	
	input.eq(0).blur(function(){//手机号失去焦点事件
		input_tip.eq(0).css("display","");
		if(!checkMobile(this.value)){//手机号错误
			input_tip.eq(0).find("i").css("background","url(images/zc/person/fail@2x.png) 50%/contain no-repeat");
			input_tip.eq(0).find("span").css("color","#ff654c").text("手机号格式错误");
			$(this).addClass("input-error");
		}else{
			input_tip.eq(0).find("i").css("background","url(images/zc/person/success@2x.png) 50%/contain no-repeat");
			input_tip.eq(0).find("span").css("color","#3f9f5f").text("通过");
			$(this).removeClass("input-error");
		}
	});
	
	
	var show_num=[];//识别码
	draw(show_num);//画出识别码
	input.eq(1).blur(function(){//识别码框失去焦点事件
		input_tip.eq(1).css("display","");
		if(this.value.toLowerCase()!=show_num.join("").toLowerCase()){//识别码错误
			input_tip.eq(1).find("i").css("background","url(images/zc/person/fail@2x.png) 50%/contain no-repeat");
			input_tip.eq(1).find("span").css("color","#ff654c").text("识别码错误");
			draw(show_num);//画出识别码
			$(this).addClass("input-error");
		}else{
			input_tip.eq(1).find("i").css("background","url(images/zc/person/success@2x.png) 50%/contain no-repeat");
			input_tip.eq(1).find("span").css("color","#3f9f5f").text("通过");
			$(this).removeClass("input-error");
		}
	});
	$("#canvas").parent().click(function(){//点击更换识别码
		draw(show_num);//画出识别码
		input_tip.eq(1).find("i").css("background","url(images/zc/person/fail@2x.png) 50%/contain no-repeat");
		input_tip.eq(1).find("span").css("color","#ff654c").text("识别码错误");
		$(input[1]).addClass("input-error");
	});
	
	var captcha=-1;//短信验证码 0服务器故障 -1初始值 其他：短信验证码
	$(".btn-valid").click(function(){//发送验证码
		show_tip(3,"操作中,请稍后...",10);
		if(!checkMobile(input[0].value)){//检查手机号
			show_tip(2,"请检查手机号",1);
			return ;
		}
		$.ajax({//检查手机号
			  url: "./Myservlet?method=checkPhone",
			  type: 'post',
			  data:{
				  phone:input[0].value
			  },
			  dataType: "json",
			  error:function(XMLHttpRequset,textStatus,errorThrown){
				  console.log("请求错误");
				  console.log(errorThrown);
				  show_tip(2,"数据库错误",1);
			  },
			  success: function(data) {
					 if(data.code<0){
						  show_tip(2,"数据库故障",1);
					 }else if(data.code==0){
						  $.ajax({//从后台获取验证码
						  	  url: "./Myservlet?method=getCaptcha",
						  	  type: 'get',
						  	  data:{
						  		  phone:input[0].value
						  	  },
						  	  dataType: "json",
						  	  error:function(XMLHttpRequset,textStatus,errorThrown){
						  		  console.log("请求错误");
						  		  console.log(errorThrown);
						  		  show_tip(2,"短信服务错误",1);
						  	  },
						  	  success: function(data) {
						  			 if(data.code==-1){
						  				  show_tip(2,"短信服务故障",1);
						  			 }else{
										 show_tip(1,"发送成功，请查收",1);
										 count_down(60,$(".btn-valid"),$(".btn-valid"));//开启倒计时
						  				 captcha=data.code;
						  			 }
						  	  }
						  });
					 }else{
						  show_tip(2,"该手机号已注册",1);
					 }
			  }
		});
	});
	input.eq(3).blur(function(){////用户名
		input_tip.eq(4).css("display","");
		if(!checkUser(this.value)){//未输入用户名
			input_tip.eq(4).find("i").css("background","url(images/zc/person/fail@2x.png) 50%/contain no-repeat");
			input_tip.eq(4).find("span").css("color","#ff654c").text("请输入用户名");
			$(this).addClass("input-error");
			return  ;
		}
		$.ajax({//在数据库中检查是否存在该用户名
			  url: "./Myservlet?method=checkUser",
			  type: 'post',
			  data:{
				  username:input[3].value
			  },
			  dataType: "json",
			  error:function(XMLHttpRequset,textStatus,errorThrown){
				  console.log("请求错误");
				  console.log(errorThrown);
				  show_tip(2,"服务故障",1);
			  },
			  success: function(data) {
					 if(data.code<0){
						  show_tip(2,"数据库故障",1);
						  return ;
					 }else  if(data.code>0){//用户名已存在
						  input_tip.eq(4).find("i").css("background","url(images/zc/person/fail@2x.png) 50%/contain no-repeat");
						  input_tip.eq(4).find("span").css("color","#ff654c").text("该用户名已存在");
						  $(this).addClass("input-error");
						   return ;
					 }else{
						 input_tip.eq(4).find("i").css("background","url(images/zc/person/success@2x.png) 50%/contain no-repeat");
						 input_tip.eq(4).find("span").css("color","#3f9f5f").text("通过");
						 $(this).removeClass("input-error");
						  return ;
					 }
			  }
		});
	});
	
	input.eq(4).blur(function(){//密码
		input_tip.eq(5).css("display","");
		if(!checkPass(this.value)){//手机号错误
			input_tip.eq(5).find("i").css("background","url(images/zc/person/fail@2x.png) 50%/contain no-repeat");
			input_tip.eq(5).find("span").css("color","#ff654c").text("密码格式错误，需以字母开头且8-16位");
			$(this).addClass("input-error");
		}else{
			input_tip.eq(5).find("i").css("background","url(images/zc/person/success@2x.png) 50%/contain no-repeat");
			input_tip.eq(5).find("span").css("color","#3f9f5f").text("通过");
			$(this).removeClass("input-error");
		}
	});
	
	
	$(".btn").eq(0).click(function(){//注册按钮
	
		if(!checkMobile(input[0].value)){//手机号错误
			input_tip.eq(0).css("display","");
			input_tip.eq(0).find("i").css("background","url(images/zc/person/fail@2x.png) 50%/contain no-repeat");
			input_tip.eq(0).find("span").css("color","#ff654c").text("手机号格式错误");
			$(input[0]).addClass("input-error");
			return ;
		}
		
		if(input[1].value.toLowerCase()!=show_num.join("").toLowerCase()){//识别码错误
			input_tip.eq(1).css("display","");
			input_tip.eq(1).find("i").css("background","url(images/zc/person/fail@2x.png) 50%/contain no-repeat");
			input_tip.eq(1).find("span").css("color","#ff654c").text("识别码错误");
			draw(show_num);//画出识别码
			$(input[1]).addClass("input-error");
			return  ;
			
		}
		
		if(captcha!=input[2].value){//验证码
			show_tip(2,"验证码不正确",1)
			return  ;
		}
		
		if(!checkUser(input[3].value)){//未输入用户名
			input_tip.eq(4).css("display","");
			input_tip.eq(4).find("i").css("background","url(images/zc/person/fail@2x.png) 50%/contain no-repeat");
			input_tip.eq(4).find("span").css("color","#ff654c").text("请输入用户名");
			$(input[3]).addClass("input-error");
			return  ;
		}
		
		if(!checkPass(input[4].value)){//手机号错误
			input_tip.eq(5).css("display","");
			input_tip.eq(5).find("i").css("background","url(images/zc/person/fail@2x.png) 50%/contain no-repeat");
			input_tip.eq(5).find("span").css("color","#ff654c").text("密码格式错误，需以字母开头且8-16位");
			$(input[4]).addClass("input-error");
			return  ;
		}
		$.ajax({//注册
			  url: "./Myservlet?method=register",
			  type: 'post',
			  data:{
				  username:input[3].value,
				  phone:input[0].value,
				  password:input[4].value
			  },
			  dataType: "json",
			  error:function(XMLHttpRequset,textStatus,errorThrown){
				  console.log("请求错误");
				  console.log(errorThrown);
				  show_tip(2,"服务故障",1);
			  },
			  success: function(data) {
					 if(data.code<0){
						  show_tip(2,"数据库故障",1);
						  return ;
					 }else if(data.code>0){
						 show_tip(1,"注册成功",1);
						 location.href="http://localhost:8080/JavaWeb%E9%A1%B9%E7%9B%AE_%E7%AC%AC%E5%85%AD%E7%BB%84/jsp/zc/travel_login.jsp";
					 }
			  }
		});
	});
	// console.log(input);
	// for(var i=0;i<input_tip.length;i++){
	// 	input_tip.eq(i).css("display","");
	// }
	// console.log(input_tip);
});